package com.gobang.domain.vo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 游戏房间视图对象
 * 用于返回游戏房间信息给客户端
 * 
 * @author System
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GameRoomVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 房间ID
     */
    private String roomId;

    /**
     * 黑方玩家信息
     */
    private PlayerInfo blackPlayer;

    /**
     * 白方玩家信息
     */
    private PlayerInfo whitePlayer;

    /**
     * 当前轮次（BLACK/WHITE）
     */
    private String currentTurn;

    /**
     * 游戏状态（WAITING/PLAYING/FINISHED/CANCELLED）
     */
    private String gameStatus;

    /**
     * 棋盘状态（15x15二维数组）
     */
    private int[][] boardState;

    /**
     * 已落子数
     */
    private Integer moveCount;

    /**
     * 获胜者ID
     */
    private Long winnerId;

    /**
     * 获胜者用户名
     */
    private String winnerUsername;

    /**
     * 游戏结束原因
     */
    private String endReason;

    /**
     * 玩家信息内部类
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class PlayerInfo implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 玩家ID
         */
        private Long id;

        /**
         * 玩家用户名
         */
        private String username;

        /**
         * 玩家当前积分
         */
        private Integer currentScore;

        /**
         * 玩家颜色（BLACK/WHITE）
         */
        private String color;
    }
} 